Skip to content

release: dev → prod (2026-09-06, second cut: notification copy + roster doc) - #1525

Merged
teetangh merged 3 commits into
prodfrom
release/dev-to-prod-2026-09-06b
Sep 6, 2026
Merged

release: dev → prod (2026-09-06, second cut: notification copy + roster doc)#1525
teetangh merged 3 commits into
prodfrom
release/dev-to-prod-2026-09-06b

Conversation

@teetangh

@teetangh teetangh commented Sep 6, 2026

Copy link
Copy Markdown
Contributor

Release: dev → prod (2026-09-06, second cut)

Follow-up to #1523 (prod b3082643b). This release carries the two PRs merged into dev since:

PR What it changes for customers
#1521 Docs only: the verification-guide seed roster is regenerated from the live database. No runtime change.
#1524 Every Novu notification now reads as a sentence: dates are written in the recipient's own time zone (with an IST label for the platform default), money is printed as currency instead of paise, plan titles replace plan ids, enums such as CONSULTATION become "consultation", the reschedule notice never reads "from to", "who cancelled" is a name (or "The platform"), and the reason is always present. Raw machine values stay beside the readable ones under unit-suffixed keys. Closes #536, part of #1085.

Verification

After merge

  • git pull on dev; wait for the Netlify production deploy; trigger one notification-bearing action on familiarisenow.com and read the inbox copy.

🤖 Generated with Claude Code

https://claude.ai/code/session_01EyngsXG829TRTBof4CSGT1

…live DB (#1521)

## Summary

A 2026-09-06 E2E run found that the "By org archetype" credential roster in `docs/enterprise/90-audits/03-verification-guide.md` had drifted from the live seed data. Specifically, the doc listed `rachel.anderson@hotmail.com` as an IIT Madras LEARNER, but that user has no live membership at IIT Madras at all — the actual IIT Madras LEARNER cohort is the Brown family (`sophia`, `thomas`, `victoria`, `william`).

While regenerating the roster from Supabase project `pzmbxqdgibfkhjwzeprf`, three more stale rows turned up in the same table:

- **Wipro LEARNERs**: doc said `olivia.anderson@gmail.com`, `patrick.anderson@outlook.com`, `priya.anderson@yahoo.com` (none have live Wipro memberships); live LEARNERs are `robert.brown@gmail.com`, `samantha.brown@outlook.com`, `sarah.brown@yahoo.com`.
- **Wipro OWNER**: doc said `samantha.anderson@yahoo.com`; the live persistent OWNER (besides `tour-owner@familiarise.dev`, which is correct) is `zara.brown@yahoo.com`.
- **Platform admin**: doc said `olivia.brown@protonmail.com`, but that user's live `role` is `CONSULTANT`, not `ADMIN` — the login would not reach the admin surface. A live `ADMIN`-role user is `robert.davis@yahoo.com`.
- **Arjun Anderson's Coaching slug**: doc said `arjun-anderson-coaching-mrpk`; the live slug is `arjun-anderson-coaching-2ncb`.

The Wipro OWNER (tour), IIT Madras OWNER/EXPERT rows, LearnPro OWNER/EXPERT rows, and the multi-org-consultant note all checked out against the live data and were left unchanged.

**Scope note:** per the task, only the credential/roster table and its accompanying note were rewritten. The step-by-step Flow B (`olivia.anderson@gmail.com` as the Wipro learner), Flow C (`rachel.anderson@hotmail.com` as the IIT learner to assign), and Flow G (`olivia.brown@protonmail.com` as the ADMIN login) narrative sections still reference the pre-drift logins and were intentionally left untouched to avoid widening this PR's scope — those should be corrected in a follow-up pass so the walkthroughs point at working logins. The "Seeded data summary" counts line (`4 orgs · 78 users · 22 enterprise memberships · ...`) also was not reverified beyond the active-membership count for the 4 archetype orgs (26, not 22) and total live `users` (250, not 78) — those higher-level counts likely reflect years of accumulated dev/prod activity on the single shared Supabase project rather than a clean reseed, and reconciling them was out of scope here.

## Regeneration SQL

```sql
-- Active enterprise memberships for the four seed orgs, joined to email/name/role.
SELECT o.name AS org_name, m.role, u.email, u.name, m.status
FROM "Membership" m
JOIN users u ON u.id = m."userId"
JOIN organizations o ON o.id = m."organizationId"
WHERE o.slug IN ('wipro', 'learnpro-academy', 'iit-madras', 'arjun-anderson-coaching-2ncb')
ORDER BY o.name, m.role, u.email;

-- Live ADMIN-role users (the "Platform admin" persona).
SELECT email, name, role FROM users WHERE role = 'ADMIN';
```

## Verification

- `npx prettier --check docs/enterprise/90-audits/03-verification-guide.md` fails, but this is pre-existing formatting debt unrelated to this change — the same command fails identically against the pre-edit `dev` version of this file (verified via `git stash`). Running `prettier --write` on the whole file would reformat ~150 unrelated lines (table alignment, `*emphasis*` → `_emphasis_`, etc.), which the task explicitly asked me not to do, so the diff here is scoped to only the touched roster lines.
- Read-only `SELECT`s only were run against Supabase; no writes were made.

## Undone

- Flow B / Flow C / Flow G narrative logins are not yet updated to match the corrected roster (see Scope note above).
- The "Seeded data summary" counts line was not reconciled against live totals.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

https://claude.ai/code/session_01EyngsXG829TRTBof4CSGT1
…— recipient-zone dates, currency amounts, plan titles, labelled types, and a reschedule sentence that never reads "from to" (#536, #1085) (#1524)

Every Novu payload now carries customer-ready values: dates rendered in the recipient's own time zone (IST-labelled by default), money as currency instead of paise, plan titles instead of ids, sentence-case labels beside the raw enums, a reschedule notice that never reads "from  to", a named canceller ("The platform" for system) with a reason that is never blank, and "until further notice" for indefinite suspensions. Raw machine values stay under unit-suffixed keys. Two CodeRabbit rounds triaged (6 threads: 5 fixed, 1 out of scope); Sonar gate OK.

Closes #536
Part of #1085

🤖 Generated with [Claude Code](https://claude.com/claude-code)

https://claude.ai/code/session_01EyngsXG829TRTBof4CSGT1
@netlify

netlify Bot commented Sep 6, 2026

Copy link
Copy Markdown

Deploy Preview for familiarise ready!

Name Link
🔨 Latest commit 0b7f316
🔍 Latest deploy log https://app.netlify.com/projects/familiarise/deploys/6a9d36a0dfa00c00084fb3a8
😎 Deploy Preview https://deploy-preview-1525--familiarise.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
Lighthouse
Lighthouse
1 paths audited
Performance: 34 (🔴 down 17 from production)
Accessibility: 90 (no change from production)
Best Practices: 83 (no change from production)
SEO: 90 (no change from production)
PWA: -
View the detailed breakdown and full score reports

To edit notification comments on pull requests, go to your Netlify project configuration.

@coderabbitai

coderabbitai Bot commented Sep 6, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Essentials

Run ID: 3300380d-ec51-48d9-83eb-281d15567b54

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Comment @coderabbitai help to get the list of available commands.

@sonarqubecloud

sonarqubecloud Bot commented Sep 6, 2026

Copy link
Copy Markdown

@teetangh
teetangh merged commit ab03012 into prod Sep 6, 2026
8 checks passed
@teetangh
teetangh deleted the release/dev-to-prod-2026-09-06b branch September 6, 2026 10:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant